package org.jsola.contract.helper;

import org.jsola.common.SafeKit;
import org.jsola.contract.dto.TemplateAddDTO;
import org.jsola.contract.dto.TemplateUpdateDTO;
import org.jsola.contract.entity.TemplateDO;
import org.jsola.contract.query.TemplateQuery;
import org.jsola.contract.service.ITemplateService;
import org.jsola.contract.vo.TemplateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.contract.core.AbstractTest.SITE_ID;



/**
 * 合同模板
 *
 * @author JanusMix
 */
@Component
public class TemplateTestHelper extends BaseTestHelper {
    
    @Autowired
    private ITemplateService templateService;

    /**
     * 生成add测试数据
     * @return TemplateAddDTO
     */
    public TemplateAddDTO getTemplateAddDTO(){
        TemplateAddDTO templateAddDTO = new TemplateAddDTO();
        templateAddDTO.setName(getRandomValue("varchar",255));
        templateAddDTO.setCategoryId(SafeKit.getLong(getRandomValue("bigint",11)));
        templateAddDTO.setContent(getRandomValue("longtext",2147483647));
        templateAddDTO.setContentJson(getRandomValue("longtext",2147483647));
        templateAddDTO.setTotalPage(SafeKit.getInteger(getRandomValue("tinyint",11)));
        return templateAddDTO;
    }


    /**
     * 生成update测试数据
     * @return TemplateUpdateDTO
     */
    public TemplateUpdateDTO getTemplateUpdateDTO(TemplateVO templateVO){
        return templateService.selectDOById(templateVO.getId(), SITE_ID).to(TemplateUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return TemplateQuery
     */
    public TemplateQuery getTemplateQuery() {
        TemplateQuery templateQuery = new TemplateQuery();
        List<TemplateDO> templateDOList = templateService.list(new TemplateDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(templateDOList)) {
            TemplateDO templateDO = templateDOList.get(0);
            templateQuery = templateDO.to(TemplateQuery.class);
        }
        return templateQuery;
    }

    /**
     * 保存示例
     * @return TemplateVO
     */
    public TemplateVO saveTemplateExample(){
        TemplateAddDTO addDTO = this.getTemplateAddDTO();
        TemplateVO templateVO = templateService.save(addDTO,buildTokenUser());
        return templateVO;
    }


}

